
#pragma once
#include <memory>

#include "DBManager/Common/DBManagerExport.h"
#include "DBManager/Common/Trait/InputTrait.h"
#include "DBManager/DBServiceFactory.h"
#include "DataStructure/Input/Dynamic/RANDPSData.h"

SG_DBMANAGER_NAMESPACE_OPEN

/**
 * @brief    Defines PSDs and cross PSDs for frequency domain fatigue (random
 * vibration) analysis using SOL 108 or SOL 111.
 *
 * @author   wuxingchuang
 * @date     2025.10.11
 */
class DBManager_DECLSPEC IRANDPSService
    : public AddTrait<SG::DataStructure::FEM::RANDPSData>,
      public FindBySIdTrait<SG::DataStructure::FEM::RANDPSData>,
      public SizeTrait {
 public:
  virtual ~IRANDPSService() {};
};

template <>
std::shared_ptr<IRANDPSService> DBManager_DECLSPEC DBServiceFactory::get();

SG_DBMANAGER_NAMESPACE_CLOSE
